import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

public class HttpServletEamples extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 一般接收浏览器或者其他客户端可以处理的 MIME头
		// image/png
		// image/jpeg
		String accept = req.getHeader("Accept");
		// 显示信息的字符集，例如：ISO-8859-1
		String acceptCharset = req.getHeader("Accept-Charset");
		// 这个头信息指定浏览器知道如何处理的编码类型
		// 值zip或者compress是最常见的两种可能值
		String acceptEncoding = req.getHeader("Accept-Encoding");
		// 客户端指定的首选语言
		String acceptLanguage = req.getHeader("Accept-Language");
		// 客户端在访问收到密码保护的网页时候，识别自己的身份
		String authorization = req.getHeader("Authorization");
		// 这个请求头只是客户端是否可以处理持久的HTTP连接，
		// 持久连接允许客户端或者其他浏览器通过单个请求来检索多个文件，
		// 值： Keep-Alive意味着使用了持续连接
		String connect = req.getHeader("Connect");
		// 这个请求只适用于POST请求，并给出POST数据的大小。
		String ContentLength = req.getHeader("Content-Length");
		// 吧之前发送到浏览器的cookies返回到服务器
		//String cookie = req.getHeader("Cookie");
		Cookie[] cookies = req.getCookies();
		// 这个头信息指定原始的url中的主机和端口
		String host = req.getHeader("Host");
		// 返回一个枚举，包含在该请求中所有的 属性名称
		Enumeration<String> attributeNames = req.getAttributeNames();
		// 返回一个枚举，包含在该请求中所有的头名称
		Enumeration<String> headerNames = req.getHeaderNames();

		// 设置响应内容类型
		resp.setContentType("text/html");

		PrintWriter out = resp.getWriter();
		String title = "HTTP Header 请求实例";
		String docType =
				"<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
		out.println(docType +
				"<html>\n" +
				"<head><meta charset=\"UTF-8\"><title>" + title + "</title></head>\n" +
				"<body bgcolor=\"#f0f0f0\">\n" +
				"<h1 align=\"center\">" + title + "</h1>\n" +
				"<table width=\"100%\" border=\"1\" align=\"center\">\n" +
				"<tr bgcolor=\"#949494\">\n" +
				"<th>Header 名称</th><th>Header 值</th>\n" +
				"</tr>\n");
		while (headerNames.hasMoreElements()) {
			String paramName = headerNames.nextElement();
			out.println("<tr><td>" + paramName + "</td>\n");
			String paramValue = req.getHeader(paramName);
			out.println("<td>" + paramValue + "</td></tr>\n");
		}
		out.println("</table>\n</body></html>");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}
